{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import cv2 #opencv读取的格式是BGR\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt#Matplotlib是RGB\n",
    "%matplotlib inline "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cv_show(img,name):\n",
    "    cv2.imshow(name,img)\n",
    "    cv2.waitKey()\n",
    "    cv2.destroyAllWindows()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 直方图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](hist_1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### cv2.calcHist(images,channels,mask,histSize,ranges)\n",
    "\n",
    "- images: 原图像图像格式为 uint8 或 ﬂoat32。当传入函数时应 用中括号 [] 括来例如[img]\n",
    "- channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。 \n",
    "- mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如 果你想统图像某一分的直方图的你就制作一个掩模图像并 使用它。\n",
    "- histSize:BIN 的数目。也应用中括号括来\n",
    "- ranges: 像素值范围常为 [0256] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(256, 1)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "img = cv2.imread('cat.jpg',0) #0表示灰度图\n",
    "hist = cv2.calcHist([img],[0],None,[256],[0,256])\n",
    "hist.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(img.ravel(),256); \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = cv2.imread('cat.jpg') \n",
    "color = ('b','g','r')\n",
    "for i,col in enumerate(color): \n",
    "    histr = cv2.calcHist([img],[i],None,[256],[0,256]) \n",
    "    plt.plot(histr,color = col) \n",
    "    plt.xlim([0,256]) \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "mask操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(414, 500)\n"
     ]
    }
   ],
   "source": [
    "# 创建mast\n",
    "mask = np.zeros(img.shape[:2], np.uint8)\n",
    "print (mask.shape)\n",
    "mask[100:300, 100:400] = 255\n",
    "cv_show(mask,'mask')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('cat.jpg', 0)\n",
    "cv_show(img,'img')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "masked_img = cv2.bitwise_and(img, img, mask=mask)#与操作\n",
    "cv_show(masked_img,'masked_img')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])\n",
    "hist_mask = cv2.calcHist([img], [0], mask, [256], [0, 256])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(221), plt.imshow(img, 'gray')\n",
    "plt.subplot(222), plt.imshow(mask, 'gray')\n",
    "plt.subplot(223), plt.imshow(masked_img, 'gray')\n",
    "plt.subplot(224), plt.plot(hist_full), plt.plot(hist_mask)\n",
    "plt.xlim([0, 256])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 直方图均衡化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](hist_2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](hist_3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](hist_4.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = cv2.imread('clahe.jpg',0) #0表示灰度图 #clahe\n",
    "plt.hist(img.ravel(),256); \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "equ = cv2.equalizeHist(img) \n",
    "plt.hist(equ.ravel(),256)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "res = np.hstack((img,equ))\n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 自适应直方图均衡化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "res_clahe = clahe.apply(img)\n",
    "res = np.hstack((img,equ,res_clahe))\n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模板匹配\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模板匹配和卷积原理很像，模板在原图像上从原点开始滑动，计算模板与（图像被模板覆盖的地方）的差别程度，这个差别程度的计算方法在opencv里有6种，然后将每次计算的结果放入一个矩阵里，作为结果输出。假如原图形是AxB大小，而模板是axb大小，则输出结果的矩阵是(A-a+1)x(B-b+1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模板匹配\n",
    "img = cv2.imread('lena.jpg', 0)\n",
    "template = cv2.imread('face.jpg', 0)\n",
    "h, w = template.shape[:2] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(263, 263)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "img.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(110, 85)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "template.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- TM_SQDIFF：计算平方不同，计算出来的值越小，越相关        \n",
    "- TM_CCORR：计算相关性，计算出来的值越大，越相关\n",
    "- TM_CCOEFF：计算相关系数，计算出来的值越大，越相关\n",
    "- TM_SQDIFF_NORMED：计算归一化平方不同，计算出来的值越接近0，越相关\n",
    "- TM_CCORR_NORMED：计算归一化相关性，计算出来的值越接近1，越相关\n",
    "- TM_CCOEFF_NORMED：计算归一化相关系数，计算出来的值越接近1，越相关\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "公式：https://docs.opencv.org/3.3.1/df/dfb/group__imgproc__object.html#ga3a7850640f1fe1f58fe91a2d7583695d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR',\n",
    "           'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(154, 179)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)\n",
    "res.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "39168.0"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "74403584.0"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
